<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>10_RegExp-正则规则字符类</title>
  <!-- 
  在 JavaScript 中，正则表达式（RegExp）是一种强大的文本处理工具，可以用来匹配字符串中的模式。正则表达式中的字符类是用于定义一组字符的便捷方式。
  一、字符类的基本概念

  字符类表示一组字符，可以用来匹配字符串中的任意一个字符。字符类通常用方括号  `[]`  来表示。

   语法
  [abc]  // 匹配 'a'、'b' 或 'c' 中的任意一个字符
  二、字符类的使用

   1. 基本字符类

  -  `[abc]` ：匹配 'a'、'b' 或 'c'。
  -  `[0-9]` ：匹配任意数字，等价于  `\d` 。
  -  `[a-z]` ：匹配任意小写字母。
  -  `[A-Z]` ：匹配任意大写字母。
  -  `[a-zA-Z]` ：匹配任意字母（无论大小写）。

   2. 否定字符类

  使用  `^`  符号在字符类的开头表示否定，即匹配不在该字符类中的字符。
  [^abc]  // 匹配任何不是 'a'、'b' 或 'c' 的字符
   3. 范围

  字符类支持字符范围的定义，例如：

  -  `[a-z]` ：匹配任意小写字母。
  -  `[A-Z]` ：匹配任意大写字母。
  -  `[0-9]` ：匹配任意数字。

   4. 特殊字符

  字符类中可以包含特殊字符，但某些特殊字符需要转义，例如：

  -  `[-]` ：表示字符范围中的连字符。
  -  `[.]` ：表示匹配字面量点字符。
  -  `[\d]` ：匹配任意数字字符，等价于  `[0-9]` 。
  -  `[\w]` ：匹配任意字母、数字或下划线，等价于  `[a-zA-Z0-9_]` 。
  -  `[\s]` ：匹配任意空白字符，包括空格、制表符和换行符。

   5. 组合字符类

  可以将多个字符类组合在一起，形成更复杂的匹配规则。例如：
  /[a-zA-Z0-9]/  // 匹配任意字母或数字
  /[a-zA-Z0-9_]/ // 匹配任意字母、数字或下划线
  三、示例

  以下是一些使用字符类的正则表达式示例：
  const regex1 = /[abc]/; // 匹配 'a'、'b' 或 'c'
  console.log(regex1.test('apple')); // true
  console.log(regex1.test('banana')); // true
  console.log(regex1.test('cherry')); // true
  console.log(regex1.test('date')); // false

  const regex2 = /[^0-9]/; // 匹配任何非数字字符
  console.log(regex2.test('123')); // false
  console.log(regex2.test('abc')); // true

  const regex3 = /[a-zA-Z]/; // 匹配任意字母
  console.log(regex3.test('Hello123')); // true
  console.log(regex3.test('123')); // false
  四、总结

  - 字符类：使用方括号  `[]`  定义一组可以匹配的字符。
  - 否定字符类：使用  `^`  符号表示不匹配字符类中的字符。
  - 范围：支持字符范围的定义，例如  `[a-z]` 、 `[0-9]` 。
  - 特殊字符：某些特殊字符需要转义处理。
- 组合使用：可以将多个字符类组合在一起，形成复杂的匹配条件。
  -->
</head>
<body>

  <script>
    const message = "fasaadsa 7978979878978989234jkwhj234324"
    
    const reg = /a[123]b/; // [123] 表示匹配 1 或 2 或 3

    const reg2 = /\d+/ig; // + 表示匹配一个或多个 d，i 表示忽略大小写，g 表示全局匹配

    console.log(message.match(reg2));
    

  </script>
  
</body>
</html>